home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / phagexsources.lha / source / LSDCopVector2.s < prev    next >
Text File  |  1994-07-09  |  16KB  |  1,021 lines

  1.     Opt    c-
  2.     Section    "Base Code",Code_c
  3.  
  4. Piccy1    = $e0000
  5. Piccy2    = $e4000
  6.  
  7. Start    Movem.l    d0-d7/a0-a6,-(sp) 
  8.     Bsr    KillSys      
  9.     
  10.     Lea    CopperList(pc),a0 
  11.     Lea    HardWare,a6      
  12.     Move.l    a0,Cop1Lc(a6)      
  13.     Move.w    #$83c0,DMACon(a6)
  14.     
  15.     Bsr    DoVector
  16.  
  17. Loop    Btst    #6,$Bfe001      
  18.     Bne    Loop      
  19.         
  20.     Bsr    ReturnSys      
  21.     Movem.l    (sp)+,d0-d7/a0-a6 
  22.     Moveq    #0,d0      
  23.     Rts
  24.  
  25. CalcVector    Add.w    #2,ZRot
  26.     Cmp.w    #360,ZRot
  27.     Bls    NotOverZRot    
  28.     Sub.w    #360,ZRot    
  29. NotOverZRot    Move.l    ObjectPt(pc),a1
  30.     Move.w    (a1)+,PointsAm
  31.     Lea    VecSineTable(pc),a3
  32.     Move.l    RotPtr,a4
  33.     Move.w    ZRot,d5
  34.     Moveq.l    #9,d7
  35.     Add.w    d5,d5
  36.     Move.w    0(a3,d5.w),SineVar5
  37.     Add.w    #$B4,d5
  38.     Move.w    0(a3,d5.w),SineVar6
  39.     
  40. VecType3    Move.w    (a1)+,d0
  41.     Move.w    (a1)+,d1    
  42.     Asl.w    #5,d0
  43.     Asl.w    #5,d1
  44.     Moveq.l    #0,d2
  45.     Move.w    SineVar5,d3
  46.     Move.w    SineVar6,d4
  47.     Move.w    d3,d5
  48.     Move.w    d4,d6
  49.     Muls    d0,d4
  50.     Muls    d1,d3
  51.     Sub.l    d3,d4
  52.     Asr.l    d7,d4
  53.     Muls    d5,d0
  54.     Muls    d6,d1
  55.     Add.l    d0,d1
  56.     Asr.l    d7,d1
  57.     Move.w    d4,d0
  58.     Asr.w    #4,d2
  59.     Asr.w    #4,d0
  60.     Asr.w    #4,d1
  61.     Move.w    d2,TempDist
  62.     Moveq.l    #9,d4
  63.     Ext.l    d0
  64.     Lsl.l    d4,d0
  65.     Add.w    DistX,d2
  66.     Add.w    #$0200,d2
  67.     Divs    d2,d0
  68.     Ext.l    d1
  69.     Lsl.l    d4,d1
  70.     Move.w    TempDist(pc),d2
  71.     Add.w    DistY,d2
  72.     Add.w    #$0200,d2
  73.     Divs    d2,d1
  74.     Add.w    XPos,d0
  75.     Add.w    YPos,d1
  76.     Move.w    d0,(a4)+
  77.     Move.w    d1,(a4)+
  78.     Move.l    a4,RotPTr
  79.     Subq.w    #1,PointsAm
  80.     Bne    VecType3
  81.     Rts
  82.     
  83. DoXYSine    Lea    DistX(pc),a4
  84.     Lea    SineXPt(pc),a5
  85.     Bsr    DoSine
  86.     Asr.w    #1,d3
  87.     Move.w    d3,(a4)
  88.     Lea    DistY(pc),a4
  89.     Lea    SineYPt(pc),a5
  90.     Bsr    DoSine
  91.     Asr.w    #1,d3
  92.     Move.w    d3,(a4)
  93.     Lea    DistX(pc),a4
  94.     And.w    #4095,0(a4)
  95.     And.w    #4095,2(a4)
  96.     ;Move.w    0(a4),2(a4)
  97.     Rts
  98. DoSine    Lea    SineData(pc),a6
  99.     Moveq    #0,d2
  100.     Moveq    #0,d3
  101.     Move.l    08(a5),d0
  102.     Move.l    12(a5),d1
  103.     Add.l    d0,00(a5)
  104.     Add.l    d1,04(a5)
  105.     And.l    #$ffe,00(a5)    
  106.     And.l    #$ffe,04(a5)    
  107.     Move.l    00(a5),d0
  108.     Move.l    04(a5),d1    
  109.     Move.w    (a6,d0.l),d2
  110.     Move.w    (a6,d1.l),d3    
  111.     Add.l    d2,d3    
  112.     Asl.w    #3,d3
  113.     Add.w    #4096,d3
  114.     Rts        
  115.  
  116. WaitBlitter    Btst    #$6,$2(a6)
  117.     Bne    WaitBlitter
  118.     Rts
  119.  
  120. KillSys    Bsr.s    SysWait    
  121.  
  122.     Move.l    $4,a6    
  123.     Lea    GFXName(pc),a1    
  124.     Moveq    #0,d0    
  125.     Jsr    -552(a6)    
  126.         
  127.     Lea    OldCop1(pc),a5
  128.     Move.l    $26(a0),$0(a5)    
  129.     Move.l    $32(a0),$4(a5)    
  130.     
  131.     Lea    HardWare,a6
  132.     Move.w    IntEnaR(a6),d0    
  133.     Move.w    DMAConR(a6),d1  
  134.     Or.w    #$8000,d0    
  135.     And.w    #$03ff,d1    
  136.     Or.w    #$8000,d1    
  137.     Move.w    d0,$8(a5)    
  138.     Move.w    d1,$a(a5)    
  139.     
  140.     Move.w    #$7fff,IntEna(a6) 
  141.     Move.w    #$7fff,DMACon(a6) 
  142.     Rts
  143.  
  144. SysWait    Move.w    #15,d7    
  145. SysWaitLoop    Move.l    #$05000,d1    
  146.     Bsr.s    WaitVBL    
  147.     Bsr.s    DoWaitVBL    
  148.     Dbf    d7,SysWaitLoop    
  149.     Rts
  150.  
  151. DoWaitVBL    Move.l    #$03000,d1    
  152. WaitVBL    Movem.l    d0-d1/a6,-(sp)    
  153.     Lea    HardWare,a6    
  154. WaitVBLLoop    Move.l    VPosR(a6),d0    
  155.     And.l    #$1ff00,d0    
  156.     Cmp.l    d1,d0    
  157.     Bne.s    WaitVBLLoop    
  158.     Movem.l    (sp)+,d0-d1/a6    
  159.     Rts        
  160.  
  161. ReturnSys    Lea    HardWare,a6    
  162.     Move.w    OldIntEna(pc),IntEna(a6)
  163.     Move.w    OldDMACon(pc),DMACon(a6)
  164.     Move.l    OldCop1(pc),Cop1lc(a6)
  165.     Move.l    OldCop2(pc),Cop2lc(a6)
  166.     Rts
  167.     
  168. SetNewObject    Lea    ObjectPt(pc),a1
  169.     Move.l    a4,(a1)
  170.     Lea    ConnectPtr(pc),a3
  171.     Move.l    #LSDConnects,(a3)
  172.     Rts
  173.  
  174. DoVector    Lea    $Dff000,a6
  175.     Bsr    BlitterWait
  176. ClearPiccy1    Move.w    #$01F0,$40(a6)
  177.     Move.w    #0,$42(a6)
  178.     Move.w    #$ffff,$44(a6)
  179.     Move.w    #$ffff,$46(a6)
  180.     Move.w    #0,$74(a6)
  181.     Move.l    #Piccy1,$54(a6)
  182.     Move.w    #0,$66(a6)
  183.     Move.w    #$4AE0,$58(a6)
  184. ClearPiccy2    Move.w    #$01F0,$40(a6)
  185.     Move.w    #0,$42(a6)
  186.     Move.w    #$ffff,$44(a6)
  187.     Move.w    #$ffff,$46(a6)
  188.     Move.w    #0,$74(a6)
  189.     Move.l    #Piccy2,$54(a6)
  190.     Move.w    #0,$66(a6)
  191.     Move.w    #$4AE0,$58(a6)
  192.     
  193.     Bsr    SetCopperLists
  194.     Bsr    BlitterWait
  195.  
  196.     Lea    $Dff000,a6
  197.     Move.w    #$f,$2E(a6)
  198.     Move.l    #CopperList1,$Dff080
  199.     
  200. LoopX    Bsr    DoXYSine
  201.     Move.l    #RotPoints,RotPtr
  202.     Lea    L_Points(pc),a4
  203.     Bsr    DoVecPart
  204.     Lea    STop_Points(pc),a4
  205.     Bsr    DoVecPart
  206.     Lea    SDot_Points(pc),a4
  207.     Bsr    DoVecPart
  208.     Lea    SBot_Points(pc),a4
  209.     Bsr    DoVecPart
  210.     Lea    D_Points(pc),a4
  211.     Bsr    DoVecPart
  212.     Bsr    VBL
  213.     
  214.     Bsr    DoDrawLines
  215.     Btst    #6,$Bfe001
  216.     Bne    LoopX    
  217.     Rts
  218.     
  219. DoVecPart    Bsr    SetNewObject
  220.     Bsr    CalcVector
  221.     Rts
  222.     
  223. BlitterWait    Btst    #$6,$2(a6)
  224.     Bne    BlitterWait
  225.     Rts
  226.     
  227. DoDrawLines    Bsr    DoubleBuffer
  228.     Move.l    ConnectPtr,a1
  229.     Lea    RotPoints(pc),a2
  230.     Lea    EndRotPoints(pc),a3
  231.     Move.w    (a1)+,d7
  232.     Subq    #1,d7
  233. DrawLineLoop    Move.w    (a1)+,d4
  234.     Move.w    (a1)+,d5
  235.     Add.w    d4,d4
  236.     Add.w    d4,d4
  237.     Add.w    d5,d5
  238.     Add.w    d5,d5
  239.     Movem.w    0(a2,d4.w),d0/d1
  240.     Movem.w    0(a2,d5.w),d2/d3
  241.     Cmp.w    d1,d3
  242.     Bpl.s    CheckSameY
  243.     Exg    d2,d0
  244.     Exg    d3,d1
  245. CheckSameY    Cmp.w    #0,d3
  246.     Bmi    DoNextConnect
  247.     Cmp.w    #$012B,d1
  248.     Bpl    DoNextConnect
  249.     Cmp.w    #0,d1
  250.     Bpl.s    ClipVec1
  251.     Sub.w    d2,d0
  252.     Sub.w    d3,d1
  253.     Move.w    d3,d4
  254.     Sub.w    #0,d4
  255.     Muls    d4,d0
  256.     Divs    d1,d0
  257.     Sub.w    d2,d0
  258.     Neg.w    d0
  259.     Move.w    #0,d1
  260.     Cmp.w    #$015F,d0
  261.     Bpl.s    ClipVec1
  262.     Bset    #4,Flags
  263.     Move.w    d1,-(a3)
  264. ClipVec1    Cmp.w    #$012B,d3
  265.     Bmi.s    ClipVec2
  266.     Move.w    d2,d4
  267.     Sub.w    d0,d2
  268.     Move.w    d1,d5
  269.     Sub.w    d3,d5
  270.     Sub.w    #$012B,d3
  271.     Muls    d3,d2
  272.     Divs    d5,d2
  273.     Add.w    d4,d2
  274.     Move.w    #$012B,d3
  275.     Cmp.w    #$015F,d2
  276.     Bpl.s    ClipVec2
  277.     Bset    #4,Flags
  278.     Move.w    d3,-(a3)
  279. ClipVec2    Cmp.w    #$015F,d0
  280.     Bpl.s    ClipVec3
  281.     Cmp.w    #0,d0
  282.     Bmi    ClipVec4
  283.     Cmp.w    #$015F,d2
  284.     Bpl    ClipVec5
  285.     Cmp.w    #0,d2
  286.     Bmi    SetCopperData
  287.     Bra    CopperLine1
  288.  
  289. ClipVec3    Cmp.w    #$015F,d2
  290.     Bpl    DoNextConnect1
  291.     Sub.w    d3,d1
  292.     Sub.w    d2,d0
  293.     Move.w    d2,d4
  294.     Sub.w    #$015F,d4
  295.     Muls    d4,d1
  296.     Divs    d0,d1
  297.     Sub.w    d3,d1
  298.     Neg.w    d1
  299.     Move.w    #$015F,d0
  300.     Bset    #2,Flags
  301.     Move.w    d1,-(a3)
  302.     Cmp.w    #0,d2
  303.     Bmi    SetCopperData
  304.     Bra.s    CopperLine1
  305.  
  306. ClipVec4    Cmp.w    #0,d2
  307.     Bmi    DoNextConnect
  308.     Sub.w    d3,d1
  309.     Move.w    d2,d4
  310.     Sub.w    #0,d4
  311.     Sub.w    d2,d0
  312.     Muls    d4,d1
  313.     Divs    d0,d1
  314.     Sub.w    d3,d1
  315.     Neg.w    d1
  316.     Move.w    #0,d0
  317.     Cmp.w    #$015F,d2
  318.     Bpl    ClipVec5
  319.     Bra.s    CopperLine1
  320.  
  321. ClipVec5    Move.w    d3,d6
  322.     Sub.w    d1,d3
  323.     Move.w    d0,d5
  324.     Sub.w    d2,d5
  325.     Sub.w    #$015F,d2
  326.     Muls    d2,d3
  327.     Divs    d5,d3
  328.     Add.w    d6,d3
  329.     Move.w    #$015F,d2
  330.     Bset    #2,Flags
  331.     Move.w    d3,-(a3)
  332.     Bra.s    CopperLine1
  333.  
  334. SetCopperData    Move.w    d3,d6
  335.     Sub.w    d1,d3
  336.     Move.w    d0,d5
  337.     Sub.w    d2,d5
  338.     Sub.w    #0,d2
  339.     Muls    d2,d3
  340.     Divs    d5,d3
  341.     Add.w    d6,d3
  342.     Move.w    #0,d2
  343. CopperLine1    Cmp.w    d1,d3
  344.     Beq    DoNextConnect
  345.     Addq.w    #1,d1
  346.     Move.l    #$10000,(a5)+
  347.     Move.w    d0,d5
  348.     Move.w    d1,d4
  349.     Muls    #$2C,d4
  350.     Asr.w    #3,d5
  351.     Add.w    d5,d4
  352.     Add.l    a6,d4
  353.     Move.w    #$4A,(a5)+
  354.     Move.w    d4,(a5)+
  355.     Move.w    #$56,(a5)+
  356.     Move.w    d4,(a5)+
  357.     Swap    d4
  358.     Move.w    #$48,(a5)+
  359.     Move.w    d4,(a5)+
  360.     Move.w    #$54,(a5)+
  361.     Move.w    d4,(a5)+
  362.     Move.w    d0,d5
  363.     And.w    #15,d5
  364.     Ror.w    #4,d5
  365.     Add.w    #$0B4A,d5
  366.     Move.w    #$40,(a5)+
  367.     Move.w    d5,(a5)+
  368.     Moveq.l    #0,d4
  369.     Sub.w    d2,d0
  370.     Bpl.s    CalcCop1
  371.     Neg.w    d0
  372.     Or.b    #1,d4
  373. CalcCop1    Sub.w    d3,d1
  374.     Bpl.s    CalcCop2
  375.     Neg.w    d1
  376.     Or.b    #2,d4
  377. CalcCop2    Cmp.w    d0,d1
  378.     Bmi.s    CheckOctants
  379.     Or.b    #4,d4
  380.     Exg    d0,d1
  381. CheckOctants    Move.b    Octants(pc,d4.w),d4
  382.     Add.w    d1,d1
  383.     Move.w    #$62,(a5)+
  384.     Move.w    d1,(a5)+
  385.     Sub.w    d0,d1
  386.     Bpl.s    SetDataInCop
  387.     Bset    #6,d4
  388. SetDataInCop    Move.w    #$42,(a5)+
  389.     Move.w    d4,(a5)+
  390.     Move.w    #$52,(a5)+
  391.     Move.w    d1,(a5)+
  392.     Move.w    d1,d3
  393.     Sub.w    d0,d1
  394.     Move.w    #$64,(a5)+
  395.     Move.w    d1,(a5)+
  396.     Lsl.w    #6,d0
  397.     Add.w    #$42,d0
  398.     Move.w    #$58,(a5)+
  399.     Move.w    d0,(a5)+
  400.     Bra.s    DoNextConnect
  401.  
  402. Octants    Dc.l    $1F1B1713
  403.     Dc.l    $0F070B03
  404. DoNextConnect    Dbra    d7,DrawLineLoop
  405.     Bra.s    FinalCopCalc
  406.  
  407. DoNextConnect1    Bset    #3,Flags
  408.     Dbra    d7,DrawLineLoop
  409. FinalCopCalc    Btst    #2,Flags
  410.     Beq.s    CopDataPlace
  411.     Cmp.l    #EndRotPoints,a3
  412.     Bne.s    CopDataPlace
  413.     Btst    #3,Flags
  414.     Bne    EndCoordData
  415. CopDataPlace    Btst    #4,Flags
  416.     Beq    CheckEndData
  417.     Btst    #3,Flags
  418.     Beq    CheckEndData
  419.     Cmp.l    #EndRotPoints,a3
  420.     Bne    CheckEndData
  421.     Move.w    #$015F,d0
  422.     Move.w    #0,d1
  423.     Move.w    d0,d2
  424.     Move.w    #$012B,d3
  425.     Addq.w    #1,d1
  426.     Move.l    #$10000,(a5)+
  427.     Move.w    d0,d5
  428.     Move.w    d1,d4
  429.     Muls    #$2C,d4
  430.     Asr.w    #3,d5
  431.     Add.w    d5,d4
  432.     Add.l    a6,d4
  433.     Move.w    #$4A,(a5)+
  434.     Move.w    d4,(a5)+
  435.     Move.w    #$56,(a5)+
  436.     Move.w    d4,(a5)+
  437.     Swap    d4
  438.     Move.w    #$48,(a5)+
  439.     Move.w    d4,(a5)+
  440.     Move.w    #$54,(a5)+
  441.     Move.w    d4,(a5)+
  442.     Move.w    d0,d5
  443.     And.w    #15,d5
  444.     Ror.w    #4,d5
  445.     Add.w    #$0B4A,d5
  446.     Move.w    #$40,(a5)+
  447.     Move.w    d5,(a5)+
  448.     Moveq.l    #0,d4
  449.     Sub.w    d2,d0
  450.     Bpl.s    CalcCop1a
  451.     Neg.w    d0
  452.     Or.b    #1,d4
  453. CalcCop1a    Sub.w    d3,d1
  454.     Bpl.s    CalcCop2a
  455.     Neg.w    d1
  456.     Or.b    #2,d4
  457. CalcCop2a    Cmp.w    d0,d1
  458.     Bmi.s    CheckOctants1a
  459.     Or.b    #4,d4
  460.     Exg    d0,d1
  461. CheckOctants1a    Move.b    Octants1a(pc,d4.w),d4
  462.     Add.w    d1,d1
  463.     Move.w    #$62,(a5)+
  464.     Move.w    d1,(a5)+
  465.     Sub.w    d0,d1
  466.     Bpl.s    NoSet6Flag
  467.     Bset    #6,d4
  468. NoSet6Flag    Move.w    #$42,(a5)+
  469.     Move.w    d4,(a5)+
  470.     Move.w    #$52,(a5)+
  471.     Move.w    d1,(a5)+
  472.     Move.w    d1,d3
  473.     Sub.w    d0,d1
  474.     Move.w    #$64,(a5)+
  475.     Move.w    d1,(a5)+
  476.     Lsl.w    #6,d0
  477.     Add.w    #$42,d0
  478.     Move.w    #$58,(a5)+
  479.     Move.w    d0,(a5)+
  480.     Bra.s    CalcTheCopSet
  481.  
  482. Octants1a    Dc.l    $1F1B1713
  483.     Dc.l    $0F070B03
  484. CalcTheCopSet    Bra    EndCoordData
  485.  
  486. CheckEndData    Cmp.l    #EndRotPoints,a3
  487.     Bpl    EndCoordData
  488.     Movem.w    (a3)+,d1/d3
  489.     Cmp.w    d1,d3
  490.     Beq    DoCheckData
  491.     Move.w    #$015F,d0
  492.     Move.w    d0,d2
  493.     Cmp.w    d1,d3
  494.     Bpl.s    CheckYLine1
  495.     Exg    d2,d0
  496.     Exg    d3,d1
  497. CheckYLine1    Addq.w    #1,d1
  498.     Move.l    #$10000,(a5)+
  499.     Move.w    d0,d5
  500.     Move.w    d1,d4
  501.     Muls    #$2C,d4
  502.     Asr.w    #3,d5
  503.     Add.w    d5,d4
  504.     Add.l    a6,d4
  505.     Move.w    #$4A,(a5)+
  506.     Move.w    d4,(a5)+
  507.     Move.w    #$56,(a5)+
  508.     Move.w    d4,(a5)+
  509.     Swap    d4
  510.     Move.w    #$48,(a5)+
  511.     Move.w    d4,(a5)+
  512.     Move.w    #$54,(a5)+
  513.     Move.w    d4,(a5)+
  514.     Move.w    d0,d5
  515.     And.w    #15,d5
  516.     Ror.w    #4,d5
  517.     Add.w    #$0B4A,d5
  518.     Move.w    #$40,(a5)+
  519.     Move.w    d5,(a5)+
  520.     Moveq.l    #0,d4
  521.     Sub.w    d2,d0
  522.     Bpl.s    CalVars1
  523.     Neg.w    d0
  524.     Or.b    #1,d4
  525. CalVars1    Sub.w    d3,d1
  526.     Bpl.s    CalVars2
  527.     Neg.w    d1
  528.     Or.b    #2,d4
  529. CalVars2    Cmp.w    d0,d1
  530.     Bmi.s    CheckOctants1b
  531.     Or.b    #4,d4
  532.     Exg    d0,d1
  533. CheckOctants1b    Move.b    Octants1b(pc,d4.w),d4
  534.     Add.w    d1,d1
  535.     Move.w    #$62,(a5)+
  536.     Move.w    d1,(a5)+
  537.     Sub.w    d0,d1
  538.     Bpl.s    SetCopper1a
  539.     Bset    #6,d4
  540. SetCopper1a    Move.w    #$42,(a5)+
  541.     Move.w    d4,(a5)+
  542.     Move.w    #$52,(a5)+
  543.     Move.w    d1,(a5)+
  544.     Move.w    d1,d3
  545.     Sub.w    d0,d1
  546.     Move.w    #$64,(a5)+
  547.     Move.w    d1,(a5)+
  548.     Lsl.w    #6,d0
  549.     Add.w    #$42,d0
  550.     Move.w    #$58,(a5)+
  551.     Move.w    d0,(a5)+
  552.     Bra.s    DoCheckData
  553.  
  554. Octants1b    Dc.l    $1F1B1713
  555.     Dc.l    $0F070B03
  556. DoCheckData    Bra    CheckEndData
  557.  
  558. EndCoordData    Bclr    #2,Flags
  559.     Bclr    #3,Flags
  560.     Bclr    #4,Flags
  561.     Move.l    a6,d0
  562.     Add.l    #$0338E,d0
  563.     Move.l    #$10000,(a5)+
  564.     Move.l    #$4009F0,(a5)+
  565.     Move.l    #$42001A,(a5)+
  566.     Move.l    #$640001,(a5)+
  567.     Move.l    #$660001,(a5)+
  568.     Move.l    #$44FFFF,(a5)+
  569.     Move.l    #$46FFFF,(a5)+
  570.     Move.w    #$52,(a5)+
  571.     Move.w    d0,(a5)+
  572.     Move.w    #$56,(a5)+
  573.     Move.w    d0,(a5)+
  574.     Swap    d0
  575.     Move.w    #$50,(a5)+
  576.     Move.w    d0,(a5)+
  577.     Move.w    #$54,(a5)+
  578.     Move.w    d0,(a5)+
  579.     Move.l    #$584AD6,(a5)+
  580.     Move.l    #$ffffFFFE,(a5)+
  581.     Rts
  582.  
  583. VBL    Move.l    $Dff004,d0
  584.     And.l    #$01FF00,d0
  585.     Cmp.l    #$012400,d0
  586.     Bne.s    VBL
  587.     Rts    
  588.  
  589. SetCopperLists    Move.l    #Piccy1,d0
  590.     Move.l    #Piccy2,d1
  591.     Lea    CopperList1(pc),a0
  592.     Lea    CopperList2(pc),a1
  593.     Lea    CopperBlitBPLS1(pc),a2
  594.     Lea    CopperBlitBPLS2(pc),a3    
  595.     Move.w    d0,6(a1)
  596.     Move.w    d0,6(a2)
  597.     Move.w    d1,6(a0)
  598.     Move.w    d1,6(a3)
  599.     Swap    d0
  600.     Swap    d1
  601.     Move.w    d0,2(a1)
  602.     Move.w    d0,2(a2)
  603.     Move.w    d1,2(a0)
  604.     Move.w    d1,2(a3)
  605.     Rts    
  606.  
  607. DoubleBuffer    Btst    #0,Flags
  608.     Bne.s    DBuffer1
  609.     Move.l    #Piccy1,a6
  610.     Move.l    #Piccy2,a4
  611.     Move.l    #CopperList1,$Dff080
  612.     Lea    CopBlit1,a5
  613.     Bra.s    Altern8Buff
  614.  
  615. DBuffer1    Move.l    #Piccy2,a6
  616.     Move.l    #Piccy1,a4
  617.     Move.l    #CopperList2,$Dff080
  618.     Lea    CopBlit2,a5
  619. Altern8Buff    Bchg    #0,Flags
  620.     Rts    
  621.  
  622.  
  623. GFXName    Dc.b    "graphics.library",0
  624.     Even
  625. OldCop1    Dc.l    0    
  626. OldCop2    Dc.l    0    
  627. OldIntEna    Dc.w    0    
  628. OldDmaCon    Dc.w    0    
  629. Screen    Dc.l    $c0000    
  630.  
  631. SineVar1    Dc.w    0
  632. SineVar2    Dc.w    0
  633. SineVar3    Dc.w    0
  634. SineVar4    Dc.w    0
  635. SineVar5    Dc.w    0
  636. SineVar6    Dc.w    0
  637.  
  638. XRot    Dc.w    10
  639. YRot    Dc.w    10
  640. ZRot    Dc.w    10
  641.  
  642. PointsAm    Dc.w    0
  643.  
  644. DistX    Dc.w    500
  645. DistY    Dc.w    500
  646. TempDist    Dc.w    0
  647.  
  648. XPos    Dc.w    176
  649. YPos    Dc.w    148
  650.  
  651. SineXPt    Dc.l    0
  652. SineXPt1    Dc.l    0
  653. SineXAdd    Dc.l    70
  654. SineXAdd1    Dc.l    54
  655.  
  656. SineYPt    Dc.l    0
  657. SineYPt1    Dc.l    0
  658. SineYAdd    Dc.l    66
  659. SineYAdd1    Dc.l    44
  660.  
  661. ObjectPt    Dc.l    0
  662.  
  663. XSize    Dc.w    0
  664. YSize    Dc.w    0
  665.  
  666. MiscVar1    Dc.w    0
  667. MiscVar2    Dc.w    $07d0
  668. MiscVar3    Dc.w    10
  669. MiscVar4    Dc.w    0
  670. MiscVar5    Dc.w    0
  671. MiscVar6    Dc.w    1
  672. MiscVar7    Dc.w    $f441
  673. MiscVar8    Dc.w    $09e7
  674.     Dc.w    2
  675.     Dc.w    $7bd6
  676. MiscPtr1    Dc.l    0
  677.  
  678. ConnectPtr    Dc.l    Connects
  679. MiscVar9    Dc.w    $49
  680.  
  681. DrawX    Dc.w    $4
  682. DrawVar1    Dc.w    $fffc
  683. DrawVar2    Dc.w    $3
  684. DrawVar3    Dc.w    $1
  685. DrawVar4    Dc.w    $1
  686.  
  687. FrameWait    Dc.w    $18
  688.  
  689. VecType    Dc.w    14
  690.  
  691. StatVar    Dc.w    0
  692.  
  693. Flags    Dc.w    0
  694. Flags1    Dc.w    0
  695. Flags2    Dc.w    $49
  696. Flags3    Dc.w    $4d
  697. Flags4    Dc.w    $36
  698. Flags5    Dc.w    $4b
  699.  
  700. RotPtr    Dc.l    0
  701.  
  702. *****************************************************************************
  703. * LSD Vector Logo Data - L / S (top, dot, bottom) / D   *   Phagex 27-8-93  *
  704. *****************************************************************************
  705.  
  706. L_Points    Dc.w    8
  707.     Dc.w    $FF79,$FFEB,$FF6E,$0000,$FF79,$0017,$FFCC,$0017
  708.     Dc.w    $FFD4,$0008,$FF95,$0008,$FF92,$0001,$FF9D,$FFEB
  709.  
  710. STop_Points    Dc.w    8
  711.     Dc.w    $FFCB,$FFEB,$0026,$FFEB,$001F,$FFFA,$FFE7,$FFFA
  712.     Dc.w    $FFE3,$0001,$FFE5,$0005,$FFC2,$0005,$FFC0,$0001
  713.  
  714. SDot_Points    Dc.w    8    
  715.     Dc.w    $FFF4,$FFFF,$FFF9,$FFFD,$FFFE,$FFFD,$0003,$FFFF
  716.     Dc.w    $0003,$0003,$FFFE,$0005,$FFF9,$0005,$FFF4,$0003
  717.  
  718. SBot_Points    Dc.w    8
  719.     Dc.w    $0012,$FFFD,$0035,$FFFD,$0037,$0001,$002C,$0017
  720.     Dc.w    $FFD1,$0017,$FFD8,$0008,$0010,$0008,$0014,$0001
  721.  
  722. D_Points    Dc.w    10
  723.     Dc.w    $002B,$FFEB,$0088,$FFEB,$0093,$0001,$0088,$0017
  724.     Dc.w    $0031,$0017,$0038,$0008,$006B,$0008,$006F,$0000
  725.     Dc.w    $006C,$FFFA,$0024,$FFFA
  726.  
  727. LSDConnects    Dc.w    42
  728.     Dc.w    00,01,01,02,02,03,03,04,04,05,05,06,06,07,07,00
  729.     Dc.w    08,09,09,10,10,11,11,12,12,13,13,14,14,15,15,08
  730.     Dc.w    16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,16
  731.     Dc.w    24,25,25,26,26,27,27,28,28,29,29,30,30,31,31,24
  732.     Dc.w    32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,32
  733.  
  734. RotPoints    Dc.w    30,40
  735.     Dc.w    40,60
  736.     Dc.w    60,60
  737.     Dc.w    60,40
  738.     
  739.     Ds.w    600
  740. EndRotPoints    Dc.w    0
  741.  
  742. Connects    Dc.w    4
  743.     Dc.w    0,1
  744.     Dc.w    1,2
  745.     Dc.w    2,3
  746.     Dc.w    3,0    
  747.  
  748. Cmv    Macro
  749.     Dc.w    \2,\1
  750.     EndM
  751.     
  752. Cwt    Macro
  753.     Dc.w    (\1*$100)+$01,$fffe
  754.     EndM    
  755.     
  756. CwtBlit    Macro
  757.     Dc.w    $1,0
  758.     EndM    
  759.  
  760. Pal    Macro
  761.     Dc.w    $ffe1,$fffe
  762.     EndM    
  763.  
  764. EndCop    Macro
  765.     Dc.w    $ffff,$fffe
  766.     EndM    
  767.  
  768. CopperList    Cwt    $15    
  769.     Cmv    $0200,BplCon0    
  770.     Cmv    $00bb,BplCon1    
  771.     Cmv    $000a,BplCon2    
  772.     Cmv    $1681,DiwStrt    
  773.     Cmv    $36c1,DiwStop
  774.     Cmv    $0034,DdfStrt    
  775.     Cmv    $00c8,DdfStop    
  776.     Cmv    $0,BplMod1
  777.     Cmv    $0,BplMod2
  778.     
  779.     Cwt    $25        
  780.     Cmv    $0000,Color01
  781.     Cmv    $0fff,Color01
  782.     
  783. CopperBPLS    Cmv    $c,BplPt0h    
  784.     Cmv    $0,BplPt0l    
  785.     Cmv    $0,BplPt1h    
  786.     Cmv    $0,BplPt1l    
  787.     Cmv    $0,BplPt2h    
  788.     Cmv    $0,BplPt2l    
  789.     Cmv    $0,BplPt3h    
  790.     Cmv    $0,BplPt3l    
  791.     Cmv    $0,BplPt4h
  792.     Cmv    $0,BplPt4l 
  793.     
  794.     Cwt    $28    
  795.     Cmv    $1200,BplCon0    
  796.  
  797.     EndCop
  798.  
  799. CopperList1    Cmv    $0,BplPt0h
  800.     Cmv    $0,BplPt0l
  801.     Cmv    $0c71,DiwStrt
  802.     Cmv    $37d1,DiwStop
  803.     Cmv    $0030,DdfStrt
  804.     Cmv    $00d8,DdfStop
  805.  
  806.     Cmv    $1200,BplCon0
  807.     Cmv    $0000,BplCon1
  808.     Cmv    $0024,BplCon2
  809.     Cmv    $0,BplMod1
  810.     Cmv    $0,BplMod2
  811.  
  812.     Cmv    $0000,Color01
  813.     Cmv    $0fff,Color01
  814.         
  815.     CwtBlit    
  816.     Cmv    $01f0,BltCon0
  817.     Cmv    $0000,BltCon1
  818.     Cmv    $ffff,BltAFWM
  819.     Cmv    $ffff,BltALWM
  820.     Cmv    $0000,BltADat
  821. CopperBlitBPLS1    Cmv    $0000,BltDPth
  822.     Cmv    $0000,BltDPtl
  823.     Cmv    $0000,BltDMod
  824.     Cmv    $4ad6,BltSize
  825.     CwtBlit
  826.     Cmv    $002c,BltCMod
  827.     Cmv    $002c,BltDMod
  828.     Cmv    $ffff,BltBDat
  829.     Cmv    $8000,BltADat
  830.     
  831. CopBlit1    EndCop
  832.     Ds.l    $420
  833.  
  834. CopperList2    Cmv    $0,BplPt0h
  835.     Cmv    $0,BplPt0l
  836.     Cmv    $0c71,DiwStrt
  837.     Cmv    $37d1,DiwStop
  838.     Cmv    $0030,DdfStrt
  839.     Cmv    $00d8,DdfStop
  840.  
  841.     Cmv    $1200,BplCon0
  842.     Cmv    $0000,BplCon1
  843.     Cmv    $0024,BplCon2
  844.     Cmv    $0,BplMod1
  845.     Cmv    $0,BplMod2
  846.  
  847.     Cmv    $0000,Color01
  848.     Cmv    $0fff,Color01
  849.         
  850.     CwtBlit    
  851.     Cmv    $01f0,BltCon0
  852.     Cmv    $0000,BltCon1
  853.     Cmv    $ffff,BltAFWM
  854.     Cmv    $ffff,BltALWM
  855.     Cmv    $0000,BltADat
  856. CopperBlitBPLS2    Cmv    $0000,BltDPth
  857.     Cmv    $0000,BltDPtl
  858.     Cmv    $0000,BltDMod
  859.     Cmv    $4ad6,BltSize
  860.     CwtBlit
  861.     Cmv    $002c,BltCMod
  862.     Cmv    $002c,BltDMod
  863.     Cmv    $ffff,BltBDat
  864.     Cmv    $8000,BltADat
  865.     
  866. CopBlit2    EndCop
  867.     Ds.l    $420
  868.  
  869. SineData    Incbin    Df0:SysData/Sine1024Bs.Dat
  870.     Incbin    Df0:SysData/Sine1024Bs.Dat
  871. VecSineTable    Incbin    Df0:SysData/VecSine.Data
  872.  
  873. ****Custom Chip Registers****
  874.  
  875. Hardware    = $Dff000
  876.  
  877. ;Control Registers
  878.  
  879. Dmaconr    = $002
  880. Vposr    = $004
  881. Vhposr    = $006
  882. Joy0dat    = $00A
  883. Joy1dat    = $00C
  884. Clxdat    = $00E
  885. Intenar    = $01C
  886. Intereqr    = $01E
  887. Copcon    = $02E
  888.  
  889. ;Blitter Registers
  890.  
  891. Bltcon0    = $040
  892. Bltcon1    = $042
  893. Bltafwm    = $044
  894. Bltalwm    = $046
  895. Bltcpth    = $048
  896. Bltcptl    = $04A
  897. Bltbpth    = $04C
  898. Bltbptl    = $04E
  899. Bltapth    = $050
  900. Bltaptl    = $052
  901. Bltdpth    = $054
  902. Bltdptl    = $056
  903. Bltsize    = $058
  904. Bltcmod    = $060
  905. Bltbmod    = $062
  906. Bltamod    = $064
  907. Bltdmod    = $066
  908. Bltcdat    = $070
  909. Bltbdat    = $072
  910. Bltadat    = $074
  911.  
  912. ;Copper Registers
  913.  
  914. Cop1lc    = $080
  915. Cop1lch    = $080
  916. Cop1lcl    = $082
  917. Cop2lc    = $084
  918. Cop2lch    = $084
  919. Cop2lcl    = $086
  920. Copjmp1    = $088
  921. Copjmp2    = $08A
  922. Diwstrt    = $08E
  923. Diwstop    = $090
  924. Ddfstrt    = $092
  925. Ddfstop    = $094
  926. Dmacon    = $096
  927. Clxcon    = $098
  928. Intena    = $09A
  929. Intreq    = $09C
  930.  
  931. ;BitPlane Registers 
  932.  
  933. BplCon0    = $100
  934. BplCon1    = $102
  935. BplCon2    = $104
  936. BplMod1    = $108
  937. BplMod2    = $10a
  938.  
  939. BplPt0h    = $0e0
  940. BplPt0l    = $0e2
  941. BplPt1h    = $0e4
  942. BplPt1l    = $0e6
  943. BplPt2h    = $0e8
  944. BplPt2l    = $0ea
  945. BplPt3h    = $0ec
  946. BplPt3l    = $0ee
  947. BplPt4h    = $0f0
  948. BplPt4l    = $0f2
  949. BplPt5h    = $0f4
  950. BplPt5l    = $0f6
  951.  
  952. ;Colour Registers
  953.  
  954. Color00    = $180
  955. Color01    = $182
  956. Color02    = $184
  957. Color03    = $186
  958. Color04    = $188
  959. Color05    = $18a
  960. Color06    = $18c
  961. Color07    = $18e
  962. Color08    = $190
  963. Color09    = $192
  964. Color10    = $194
  965. Color11    = $196
  966. Color12    = $198
  967. Color13     = $19a
  968. Color14     = $19c
  969. Color15     = $19e
  970. Color16     = $1a0
  971. Color17     = $1a2
  972. Color18     = $1a4
  973. Color19     = $1a6
  974. Color20     = $1a8
  975. Color21     = $1aa
  976. Color22     = $1ac
  977. Color23     = $1ae
  978. Color24     = $1b0
  979. Color25     = $1b2
  980. Color26     = $1b4
  981. Color27     = $1b6
  982. Color28     = $1b8
  983. Color29     = $1ba
  984. Color30     = $1bc
  985. Color31     = $1be
  986.  
  987. EcsNop    = $1fe
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.  
  1021.